package com.henu.engineer.service.questionnaire

import com.henu.engineer.dao.entity.questionnaire.*
import com.henu.engineer.dao.mapper.questionnaire.QuestionnaireInitiateMapper
import com.henu.engineer.dao.mapper.questionnaire.QuestionnaireTemplateMapper
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service

/**
 * 问卷调查
 */
@Service
class QuestionnaireService {

    @Autowired
    lateinit var questionnaireTemplateMapper: QuestionnaireTemplateMapper

    @Autowired
    lateinit var questionnaireInitiateMapper: QuestionnaireInitiateMapper


    /**
     * ------------------问卷模板
     */
    /**
     * 获取所有问卷模板
     */
    fun getAllQuestionnaireTemplate(): List<Questionnaire> {

        return questionnaireTemplateMapper.getAllQuestionnaireTemplate();
    }

    /**
     * 查看特定问卷模板
     */
    fun getQuestionnaireTemplate(questionnaireId: Int): Questionnaire {
        return questionnaireTemplateMapper.getQuestionnaireTemplate(questionnaireId);
    }


    /**
     * --------问卷发布
     */

    /**
    /**
     * 申请发布问卷
     * 1.查询问卷模板+插入
     * 2.查询相应问题+插入
     * 3.查询相应选项+插入
    */
     */
    fun initiateNewQuestionnaire(questionnaireId: Int): Boolean {


        var questionnaireInitiate = questionnaireInitiateMapper.getQuestionnaire(questionnaireId)
      /*  //1.根据questionnaireId获取模板，插入questionnaireInitiate
        questionnaireInitiateMapper.initiateNewQuestionnaire(questionnaireInitiate)

        //2.根据questionnaireId获取获取问题，加上questionnaireInitiateId，插入
        var a: Int? = questionnaireInitiate.questionnaireInitiateId
        questionnaireInitiateMapper.initiateNewQuestionnaireQuestion(questionnaireInitiateMapper.getQuestion(questionnaireId), a)
        //3.根据questionnaireId获取获取选项，加上questionnaireInitiateId，插入
        questionnaireInitiateMapper.initiateNewQuestionnaireOption(questionnaireInitiateMapper.getOption(questionnaireId), a)
*/
        if (questionnaireInitiateMapper.initiateNewQuestionnaire(questionnaireInitiate)) {
            var a: Int? = questionnaireInitiate.questionnaireInitiateId
            if (questionnaireInitiateMapper.initiateNewQuestionnaireQuestion(questionnaireInitiateMapper.getQuestion(questionnaireId), a)) {
                if (questionnaireInitiateMapper.initiateNewQuestionnaireOption(questionnaireInitiateMapper.getOption(questionnaireId), a)
                ) {
                    return true
                }
            }
            return false
        }
        return false


    }


    /**
     * 获取所有发布的问卷
     */
    fun getAllQuestionnaireInitiate(): List<QuestionnaireInitiate> {

        return questionnaireInitiateMapper.getAllQuestionnaireInitiate()
    }

    /**
     * 获取特定发布的问卷
     */
    fun getQuestionnaireInitiate(questionnaireInitiateId: Int): QuestionnaireInitiate {
        return questionnaireInitiateMapper.getQuestionnaireInitiate(questionnaireInitiateId)
    }


    /**
     * 提交问卷
     */
    fun submitRealNameQuestionnaire(questionnaireResultRealName: List<QuestionnaireResultRealName>): Boolean {
        questionnaireInitiateMapper.submitRealNameQuestionnaire(questionnaireResultRealName)
        return questionnaireInitiateMapper.modifyStatisticalResults(questionnaireResultRealName)
    }

    /**
     * 获取特定发布的问卷--结果
     */
    fun getRealNameResult(questionnaireInitiateId: Int): QuestionnaireInitiate {
        return questionnaireInitiateMapper.getRealNameResult(questionnaireInitiateId)
    }


    /**
     * 获取特定发布的问卷--某一提的主观题结果
     */
    fun getSubjectiveResult(questionnaireInitiateId: Int, questionNumber: Int): List<QuestionnaireResultRealName> {
        return questionnaireInitiateMapper.getSubjectiveResult(questionnaireInitiateId, questionNumber)
    }


    /**
     * 获取特定发布的问卷--某一提的主观题结果
     */
    fun getChooser(questionnaireInitiateId: Int, questionNumber: Int, optionNumber: String): List<QuestionnaireResultRealName> {
        return questionnaireInitiateMapper.getChooser(questionnaireInitiateId, questionNumber, optionNumber)
    }


}